#include "Cuadrado.h"


//Constructoras y Destructoras
Cuadrado::Cuadrado(void)
{
	this->p1 = new PV2D();
	this->p2 = new PV2D();
	this->p3 = new PV2D();
	this->p4 = new PV2D();
	this->r = 1.0f;
	this->g = 1.0f;
	this->b = 1.0f;
}
Cuadrado::Cuadrado(const Cuadrado &c)
{
	this->p1 = c.p1->clone();
	this->p2 = c.p2->clone();
	this->p3 = c.p3->clone();
	this->p4 = c.p4->clone();
	this->r = c.r;
	this->g = c.g;
	this->b = c.b;

}

Cuadrado::Cuadrado(PV2D* p1, PV2D* p2, PV2D* p3, PV2D* p4)
{
	this->p1 = p1->clone();
	this->p2 = p2->clone();
	this->p3 = p3->clone();
	this->p4 = p4->clone();
	this->r = 0.0f;
	this->g = 0.3f;
	this->b = 1.0f;
}

Cuadrado::Cuadrado(PV2D* p1, PV2D* p2, PV2D* p3, PV2D* p4, GLfloat r, GLfloat g, GLfloat b)
{
	this->p1 = p1->clone();
	this->p2 = p2->clone();
	this->p3 = p3->clone();
	this->p4 = p4->clone();
	this->r = r;
	this->g = g;
	this->b = b;
}
	
Cuadrado::~Cuadrado(void)
{
	if (p1) delete p1;
	if (p2) delete p2;
	if (p3) delete p3;
	if (p4) delete p4;
	p1 = p2 = p3 = p4 = 0;
}

//Setters y Getters
void Cuadrado::setP1(PV2D* p1)
{
	if (this->p1) delete this->p1;
	this->p1 = p1->clone();
}

void Cuadrado::setP2(PV2D* p2)
{
	if (this->p2) delete this->p2;
	this->p2 = p2->clone();
}

void Cuadrado::setP3(PV2D* p3)
{
	if (this->p3) delete this->p3;
	this->p3 = p3->clone();
}

void Cuadrado::setP4(PV2D* p4)
{
	if (this->p4) delete this->p4;
	this->p4 = p4->clone();
}

void Cuadrado::setColor(GLfloat r, GLfloat g, GLfloat b)
{
	this->r = r;
	this->g = g;
	this->b = b;
}

PV2D* Cuadrado::getP1()
{
	return p1->clone();
}

PV2D* Cuadrado::getP2()
{
	return p2->clone();
}

PV2D* Cuadrado::getP3()
{
	return p3->clone();
}

PV2D* Cuadrado::getP4()
{
	return p4->clone();
}


//Draw
void Cuadrado::draw()
{
	glColor3f(r,g,b);
	glBegin(GL_QUADS);
		glVertex2d(p1->getX(),p1->getY());
		glVertex2d(p2->getX(),p2->getY());
		glVertex2d(p3->getX(),p3->getY());
		glVertex2d(p4->getX(),p4->getY());
	glEnd();
}
